Multiple sinusoidal seek servo system for reducing seek acoustics and seek time in hard disk drives

ABSTRACT

A hard disk drive that includes a voice coil motor controlled by a servo. The servo provides a driving signal that has multiple sinusoidal waveforms. The multi-sinusoidal waveforms minimize seek time and vibrations in the drive.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates to a servo routine of a hard disk drive.

2. Background Information

Hard disk drives contain a plurality of magnetic heads that are coupled to rotating disks. The heads write and read information by magnetizing and sensing the magnetic fields of the disk surfaces. Each head is attached to a flexure arm to create a subassembly commonly referred to as a head gimbal assembly (“HGA”). The HGA's are suspended from an actuator arm. The actuator arm has a voice coil motor that can move the heads across the surfaces of the disks.

Information is typically stored in radial tracks that extend across the surface of each disk. Each track is typically divided into a number of segments or sectors. The voice coil motor and actuator arm can move the heads to different tracks of the disks.

FIG. 1 shows a typical track that has a number of fields associated with each sector. A sector may include an automatic gain control (“AGC”) field 1 that is used to adjust the strength of the read signal, a sync field 2 to establish a timing reference for the circuits of the drive, and ID 3 and Gray Code 4 fields to provide sector and track identification.

Each sector may have also a servo field 5 located adjacent to a data field 6. The servo field 5 contains a plurality of servo bits A, B, C and D that are read and utilized in a servo routine to position the head 7 relative to the track. By way of example, the servo routine may utilize the algorithm of ((A−B)−(C−D)) to create a position error signal (“PES”). The PES is used to create a drive signal for the voice coil motor to position the head on the track.

The drive can enter a seek routine to access data at different disk tracks. During a seek routine a requested address location is provided and a corresponding seek time and drive current is calculated to drive the voice coil motor and move the heads to the desired location. There are typically two types of seek trajectories utilized to move the heads, bang-bang and sinusoidal. Bang-bang trajectories tend to introduce unwanted vibration in the drive. Sinusoidal trajectories introduce less vibration but typically require longer seek times. It would be desirable to provide a seek trajectory that minimized seek times and unwanted vibration.

BRIEF SUMMARY OF THE INVENTION

A hard disk drive that contains a servo that controls a voice coil motor. The servo provides a driving current to the voice coil motor that has multiple sinusoidal waveforms.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an illustration of a track of the prior art;

FIG. 2 is a top view of an embodiment of a hard disk drive;

FIG. 3 is a top enlarged view of a head of the hard disk drive;

FIG. 4 is a schematic of an electrical circuit for the hard disk drive;

FIG. 5 is a schematic of a servo for the hard disk drive;

FIG. 6 is a graph showing a seek performance using a single sinusoidal drive current;

FIG. 7 is a graph showing a seek performance using a multi-sinusoidal drive current.

DETAILED DESCRIPTION

Described is a hard disk drive that includes a voice coil motor controlled by a servo. The servo provides a driving current that has multiple sinusoidal waveforms. The multi-sinusoidal waveforms minimize seek time and vibrations in the drive.

Referring to the drawings more particularly by reference numbers, FIG. 2 shows an embodiment of a hard disk drive 10. The disk drive 10 may include one or more magnetic disks 12 that are rotated by a spindle motor 14. The spindle motor 14 may be mounted to a base plate 16. The disk drive 10 may further have a cover 18 that encloses the disks 12.

The disk drive 10 may include a plurality of heads 20 located adjacent to the disks 12. As shown in FIG. 3 the heads 20 may have separate write 24 and read elements 22. The write element 24 magnetizes the disk 12 to write data. The read element 22 senses the magnetic fields of the disks 12 to read data. By way of example, the read element 22 may be constructed from a magneto-resistive material that has a resistance which varies linearly with changes in magnetic flux.

Referring to FIG. 2, each head 20 may be gimbal mounted to a suspension arm 26 as part of a head gimbal assembly (HGA). The suspension arms 26 are attached to an actuator arm 28 that is pivotally mounted to the base plate 16 by a bearing assembly 30. A voice coil 32 is attached to the actuator arm 28. The voice coil 32 is coupled to a magnet assembly 34 to create a voice coil motor (VCM) 36. Providing a current to the voice coil 32 will create a torque that swings the actuator arm 28 and moves the heads 20 across the disks 12.

The hard disk drive 10 may include a printed circuit board assembly 38 that includes one or more integrated circuits 40 coupled to a printed circuit board 42. The printed circuit board 40 is coupled to the voice coil 32, heads 20 and spindle motor 14 by wires (not shown).

FIG. 4 shows an electrical circuit 50 for reading and writing data onto the disks 12. The circuit 50 may include a pre-amplifier circuit 52 that is coupled to the heads 20. The pre-amplifier circuit 52 has a read data channel 54 and a write data channel 56 that are connected to a read/write channel circuit 58. The pre-amplifier 52 also has a read/write enable gate 60 connected to a controller 64. Data can be written onto the disks 12, or read from the disks 12 by enabling the read/write enable gate 60.

The read/write channel circuit 58 is connected to a controller 64 through read and write channels 66 and 68, respectively, and read and write gates 70 and 72, respectively. The read gate 70 is enabled when data is to be read from the disks 12. The write gate 72 is enabled when writing data to the disks 12. The controller 64 may be a digital signal processor that operates in accordance with a software routine, including a routine(s) to write and read data from the disks 12. The read/write channel circuit 58 and controller 64 may also be connected to a motor control circuit 74 which controls the voice coil motor 36 and spindle motor 14. The controller 64 may be connected to a non-volatile memory device 76. By way of example, the device 76 may be a read only memory (“ROM”) that contains instructions that are read by the controller 64.

Each sector of a disk track typically has servo bits A, B, C and D as shown in FIG. 1. The controller 64 may operate a servo routine utilizing the servo bits to position the head relative to the track. The head is moved in accordance with a position error signal (“PES”). The PES reflects the difference between a target position and the actual position of the head.

FIG. 5 shows a schematic of a servo 100 used to perform a seek operation. The servo is typically performed by the controller 64. In a seek operation the heads are moved from one track location to another track location. The seek distance x_(sk) can be provided to a Seek Time Table 102 that provides a seek time n_(sk) from a predefined table. A Current Shape Coefficient Calculator 104 computes Fourier coefficients r_(c,m) and r_(s,m) from the seek distance x_(sk) and curve fitting parameters £ and β. The curve fitting parameters vary for each seek distance and are provided by a curve fitting table 106. An Amplitude Detector 108 calculates position x_(amp), velocity v_(amp) and current u_(amp) amplitudes from the seek time t_(sk), the seek length x_(sk) and the Fourier coefficients r_(c,m) and r_(s,m).

A Fourier Coefficient Calculator 110 then calculates position Fourier coefficients x_(c,m) and x_(s,m), velocity Fourier coefficients v_(c,m) and v_(s,m), and current Fourier coefficients u_(c,m) and u_(s,m). The Fourier coefficients are provided to a Seek Trajectory Calculator 112.

The servo 100 includes a Sine Lookup Table 114 and Sinusoidal Wave Generator 116 that generate multiple sinusoidal waveforms. The Seek Trajectory Calculator 112 outputs position x*(t), velocity v*(t) and current u*(t) trajectories using the Fourier coefficients and multi-sinusoidal waveforms.

Neglecting high-frequency flexible modes, we can express the dynamic model of a voice coil motor actuator as:

{umlaut over (x)}={dot over (v)}=K_(a)u  (1)

Here, K_(a) is VCM actuator acceleration constant. The variables x, v, u are position, velocity, and current of VCM, respectively. The VCM current dynamics are decribed by:

z=L{dot over (u)}+Ru+K _(e) v  (2)

The constants L, R, and K_(e) represent VCM coil inductance, VCM coil resistance, and back EMF constant, respectively. The variable z is VCM coil voltage. An embodiment of a seek projectory of the present invention is derived as follows:

The VCM current can be provided in the form of a finite Fourier series with unknown Fourier coefficients.

$\begin{matrix} {{u^{*}(t)} = {{\sum\limits_{m = 1}^{M}{u_{c,m}{\cos \left( {\frac{2m\; \pi}{t_{sk}}t} \right)}}} + {\sum\limits_{m = 1}^{M}{u_{s,m}{\sin \left( {\frac{2m\; \pi}{t_{sk}}t} \right)}}}}} & (3) \end{matrix}$

where t_(sk) is seek time and M is the number of harmonics. The unknown cosine coefficients u_(c,m),m=1,2, . . . ,M and sine coefficients u_(s,m),m=1,2, . . . ,M will be determined such that seek time is minimized. Integrating current trajectory in equation (3) over time successively provides the following velocity and position trajectories:

$\begin{matrix} \begin{matrix} {{v^{*}(t)} = {\int_{0}^{t}{K_{a}{u^{*}(\tau)}\ {\tau}}}} \\ {= {{\sum\limits_{m = 1}^{M}{\frac{K_{a}t_{sk}}{2m\; \pi}{u_{s,m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{t_{sk}}t} \right)}} \right\rbrack}}} +}} \\ {{\sum\limits_{m = 1}^{M}{\frac{K_{a}t_{sk}}{2m\; \pi}u_{c,m}{\sin \left( {\frac{2m\; \pi}{t_{sk}}t} \right)}}}} \end{matrix} & (4) \\ \begin{matrix} {{x^{*}(t)} = {\int_{0}^{t}{{v^{*}(\tau)}\ {\tau}}}} \\ {= {{\sum\limits_{m = 1}^{M}{\frac{K_{a}t_{sk}}{2m\; \pi}u_{s,m}t}} + {\sum\limits_{m = 1}^{M}{\frac{K_{a}t_{sk}^{2}}{\left( {2m\; \pi} \right)^{2}}{I_{c,m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{t_{sk}}t} \right)}} \right\rbrack}}} -}} \\ {{\sum\limits_{m = 1}^{M}{\frac{K_{a}t_{sk}^{2}}{\left( {2m\; \pi} \right)^{2}}I_{s,m}{\sin \left( {\frac{2m\; \pi}{t_{sk}}t} \right)}}}} \end{matrix} & (5) \end{matrix}$

Using the position trajectory, it can be seen that seek time t_(sk) for seek length x_(sk) is:

$\begin{matrix} {t_{sk}^{2} = \frac{2\; \pi \; x_{sk}}{K_{a}{\sum\limits_{m = 1}^{M}\frac{u_{s,m}}{m}}}} & (6) \end{matrix}$

There are practical constraints imposed on VCM current. First, VCM voltage is limited to the finite power supply voltage V_(s). Substituting equations (3) and (4) into equation (2), the first constraint on VCM current can be expressed as:

$\begin{matrix} {{\max\limits_{0 \leq t \leq t_{sk}}{{z(t)}}} = {{\max\limits_{0 \leq t \leq t_{sk}}{{{\sum\limits_{m = 1}^{M}{\frac{K_{e}K_{a}t_{sk}}{2m\; \pi}u_{s,m}}} + {\sum\limits_{m = 1}^{M}{\left( {{{- \frac{L\; 2m\; \pi}{t_{sk}}}u_{c,m}} + {\frac{K_{e}K_{a}t_{sk}}{2m\; \pi}u_{c,m}} + {Ru}_{s,m}} \right){\sin \left( {\frac{\; {2m\; \pi}}{t_{sk}}t} \right)}}} + {\sum\limits_{m = 1}^{M}{\left( {{\frac{L\; 2m\; \pi}{t_{sk}}u_{s,m}} - {\frac{K_{e}K_{a}t_{sk}}{2m\; \pi}u_{s,m}} + {Ru}_{c,m}} \right){\cos \left( {\frac{\; {2m\; \pi}}{t_{sk}}t} \right)}}}}}} \leq V_{s}}} & (7) \end{matrix}$

Another constraint is that VCM current should be zero at the start and finish time of seek for its continuity.

$\begin{matrix} {{u^{*}(0)} = {{u^{*}\left( t_{sk} \right)} = {{\sum\limits_{m = 1}^{M}u_{c,m}} = 0}}} & (8) \end{matrix}$

The optimization can be achieved by finding the unknown coefficients u_(c,m),u_(s,m) such that the seek time equation (6) is minimized under two constraints defined by equations (7) and (8). The optimization problem can be described as:

Minimize f(x)

subject to c ₁(x)≦0 and c ₂(x)=0  (9)

Here, vector x and functions f(x), c₁(x), c₂(x) are defined by:

x=[u_(s,1) u_(s,2) . . . u_(s,M) u_(c,1) u_(c,2) . . . u_(c,M)]  (10)

$\begin{matrix} {{c_{1}(x)} = {{\max\limits_{0 \leq t \leq t_{sk}}{{{\sum\limits_{m = 1}^{M}{\frac{K_{e}K_{a}t_{sk}}{2m\; \pi}u_{s,m}}} + {\sum\limits_{m = 1}^{M}{\left( {{{- \frac{L\; 2m\; \pi}{t_{sk}}}u_{c,m}} + {\frac{K_{e}K_{a}t_{sk}}{2m\; \pi}u_{c,m}} + {Ru}_{s,m}} \right)\sin \left( {\frac{\; {2m\; \pi}}{t_{sk}}t} \right)}} + {\sum\limits_{m = 1}^{M}{\left( {{\frac{L\; 2m\; \pi}{t_{sk}}u_{s,m}} - {\frac{K_{e}K_{a}t_{sk}}{2m\; \pi}u_{s,m}} + {Ru}_{c,m}} \right){\cos \left( {\frac{\; {2m\; \pi}}{t_{sk}}t} \right)}}}}}} - V_{s}}} & (12) \\ {{c_{2}(x)} = {\sum\limits_{m = 1}^{M}u_{c,m}}} & (13) \end{matrix}$

This is a constrained nonlinear optimization problem. It is almost impossible to find the closed-form solution to the optimization problem. The Matlab command FMINCON(FMIN,X0,NONCON) is quite well suited to the numerical solution of the constrained optimization problem. Here, FMIN, X0, and NONCON are used for setting objective function, initial solution, and nonlinear constraints, respectively. The optimization problem is solved to find the current Fourier coefficients u_(c,m),u_(s,m) for each seek length x_(sk).

Optimization of the seek trajectory can be found in the following manner. The seek time t_(sk) in equation (6) is calculated from the solution u_(c,m),u_(x,m) at each seek length. The seek time is divided by sampling period T_(s) to be converted to discrete seek time n_(sk)=t_(sk)/T_(s). The discrete seek time is saved in Seek Time Table 102. The current amplitude is defined as the first sine Fourier coefficient u_(amp)=u_(s,1) and each Fourier coefficient is normalized by the current amplitude.

$\begin{matrix} {{r_{s,m} = \frac{u_{s,m}}{u_{s,1}}},{r_{c,m} = \frac{u_{c,m}}{u_{s,1}}},{m = 1},2,\ldots \mspace{11mu},M} & (14) \end{matrix}$

The relative coefficients determine the shape of the seek trajectory and are different for each seek length. The first order curve fitting is used to approximate the variation of relative coefficients with seek length.

r _(s,m)=α_(s,m) x _(sk)+β_(s,m) , r _(c,m)=α_(c,m) x _(sk)+β_(c,m) , m=1, 2, . . . , M  (15)

Here, α_(s,m),β_(s,m),α_(c,m),β_(c,m),m=1,2, . . . ,M denote curve fitting parameters. They are determined at each seek length and saved in table 106. The Current Shape Coefficient Calculator 104 computes the relative coefficients with the parameters α_(s,m),β_(s,m),α_(c,m),β_(c,m) provided by the Table 106 and using equation (15).

A discrete version of equation (14) can be written as:

$\begin{matrix} {{{u^{*}(n)} = {{\sum\limits_{m = 1}^{M}{u_{amp}r_{c,m}{\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}} + {\sum\limits_{m = 1}^{M}{u_{amp}r_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}}{{v^{*}(n)} = {{\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}n_{sk}u_{amp}}{2\; \pi}{\frac{r_{s,m}}{m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}} \right\rbrack}}} + {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}n_{sk}u_{amp}}{2\; \pi}\frac{r_{c,m}}{m}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}}{{x^{*}(n)} = {{\frac{x_{sk}}{n_{sk}}n} + {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}^{2}n_{sk}^{2}u_{amp}}{\left( {2\; \pi} \right)^{2}}{\frac{r_{c,m}}{m^{2}}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}} \right\rbrack}}} - {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}^{2}n_{sk}^{2}u_{amp}}{\left( {2\; \pi} \right)^{2}}\frac{r_{s,m}}{m^{2}}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}}} & (16) \end{matrix}$

Here, k is discrete time. If some seek length x_(sk) is specified, the corresponding seek time n_(sk) is determined by reading Seek Time Table 102. The Current Shape Coefficient Calculator 104 reads curve fitting parameters α_(s,m),β_(s,m),α_(c,m),β_(c,m) from α,β table 106 and computes relative Fourier coefficients r_(c,m),r_(s,m) using equations (15). The Amplitude Calculator 108 determines current amplitude, velocity amplitude, and position amplitude from seek length, seek time, and relative Fourier coefficents. Combining equations (6) and (14), the current amplitude u_(amp) can be computed from the following equation:

$\begin{matrix} {u_{amp} = \frac{2\; \pi \; x_{sk}}{K_{a}T_{s}^{2}n_{sk}^{2}{\sum\limits_{m = 1}^{M}\frac{r_{s,m}}{m}}}} & (17) \end{matrix}$

Velocity amplitude v_(amp) and position amplitude x_(amp) can be computed with the following equations:

$\begin{matrix} {{v_{amp} = {\frac{K_{a}T_{s}}{2\; \pi}n_{sk}u_{amp}}},{x_{amp} = {\frac{K_{a}T_{s}^{2}}{\left( {2\; \pi} \right)^{2}}n_{sk}^{2}u_{amp}}}} & (18) \end{matrix}$

Fourier Coefficient Calculator 110 determines Fourier coefficients from relative Fourier coefficients and amplitudes using the following equations:

$\begin{matrix} {{{u_{c,m} = {u_{amp}r_{c,m}}},\mspace{14mu} {u_{s,m} = {u_{amp}r_{s,m}}},\mspace{14mu} {m = 1},2,\ldots \mspace{11mu},M}{{v_{c,m} = {v_{amp}\frac{r_{s,m}}{m}}},\mspace{14mu} {v_{s,m} = {v_{amp}\frac{r_{c,m}}{m}}},\mspace{14mu} {m = 1},2,\ldots \mspace{11mu},M}{{x_{c,m} = {x_{amp}\frac{r_{c,m}}{m^{2}}}},\mspace{14mu} {x_{s,m} = {x_{amp}\frac{r_{s,m}}{m^{2}}}},\mspace{14mu} {m = 1},2,\ldots \mspace{11mu},M}} & (19) \end{matrix}$

The coefficient of position ramp signal is computed as:

$\begin{matrix} {x_{0} = \frac{x_{sk}}{n_{sk}}} & (20) \end{matrix}$

Sinusoidal signal generator 116 generates two fundamental signals cos(2πn/n_(sk)) and sin(2πn/n_(sk)) by reading Sine Lookup Table 104. The harmonic signals can be generated from a fundamental signal by using the following recursive equation:

$\begin{matrix} {{\begin{bmatrix} {\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)} \\ {\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)} \end{bmatrix} = {\begin{bmatrix} {\cos \left( {\frac{2\; \pi}{n_{sk}}n} \right)} & {- {\sin \left( {\frac{2\; \pi}{n_{sk}}n} \right)}} \\ {\sin \left( {\frac{2\; \pi}{n_{sk}}n} \right)} & {\cos \left( {\frac{2\; \pi}{n_{sk}}n} \right)} \end{bmatrix}\begin{bmatrix} {\cos \left( {\frac{2\; \left( {m - 1} \right)\pi}{n_{sk}}n} \right)} \\ {\sin \left( {\frac{2\; \left( {m - 1} \right)\pi}{n_{sk}}n} \right)} \end{bmatrix}}},{m = 2},3,\ldots \mspace{11mu},M} & (21) \end{matrix}$

The Trajectory Calculator 112 generates current trajectory, velocity trajectory, and position trajectory by multiplying sinusoidal signals and Fourier coefficients in accordance with the following equations:

$\begin{matrix} {{{u^{*}(n)} = {{\sum\limits_{m = 1}^{M}{u_{c,m}{\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}} + {\sum\limits_{m = 1}^{M}{u_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}}{{v^{*}(n)} = {{\sum\limits_{m = 1}^{M}{v_{c,m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}} \right\rbrack}} + {\sum\limits_{m = 1}^{M}{v_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}}{{x^{*}(n)} = {{x_{0}n} + {\sum\limits_{m = 1}^{M}{x_{c,m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}} \right\rbrack}} - {\sum\limits_{m = 1}^{M}{x_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}}} & (22) \end{matrix}$

An embodiment of a seek trajectory in the case of coast mode seek is derived as follows. Coast mode is between acceleration mode and deceleration mode. Coast mode is where VCM is kept at allowable maximum speed. v_(max), x_(max), and Δx denote maximum velocity, minimum seek seek length to reach maximum velocity, and increment of position per servo sample at maximum velocity, respectively. n_(accel), n_(decel), and n_(accel) _(—) _(decel) are acceleration time, deceleration time, and their sum at seek length x_(max), respectively. If seek length x_(sk) is larger than x_(max), the coast mode. Then, coast mode time n_(coast) is calculated as:

$\begin{matrix} {n_{coast} = \frac{x_{sk} - x_{\max}}{v_{\max}}} & (23) \end{matrix}$

and seek time n_(sk) is:

n _(sk) =n _(accel) _(—) _(decel) +n _(coast) =n _(accel) +n _(decel) +n _(coast)  (24)

Travel length during coast mode x_(coast) and the remaining travel length x_(accel) _(—) _(decel) can be computed as:

x _(coast) =n _(coast) Δc  (25)

x _(Xaccel) _(—) _(decel) =x _(sk) −x _(coast)  (26)

Using equations (17) and (18), current amplitude, velocity amplitude, and position amplitude can be computed with the following equations:

$\begin{matrix} {{u_{{amp},\max} = \frac{2\; \pi \; x_{accel\_ decel}}{K_{a}T_{s}^{2}n_{accel\_ decel}^{2}{\sum\limits_{m = 1}^{M}\frac{r_{s,m,\max}}{m}}}}{v_{{amp},\max} = {\frac{K_{a}T_{s}}{2\; \pi}n_{accel\_ decel}u_{{amp},\max}}}{x_{{amp},\max} = {\frac{K_{a}T_{s}^{2}}{\left( {2\; \pi} \right)^{2}}n_{accel\_ decel}^{2}u_{{amp},\max}}}} & (27) \end{matrix}$

where r_(c,m,max),r_(s,m,max) are relative Fourier coefficients of current trajectory for seek length x_(max). From equation (19), the Fourier coefficients can be computed for each trajectory as follows:

$\begin{matrix} {{{u_{c,m} = {u_{{amp},\max}r_{c,m,\max}}},\mspace{14mu} {u_{s,m} = {u_{{amp},\max}r_{s,m,\max}}},\mspace{11mu} \; {m = 1},2,\ldots \mspace{11mu},M}{{v_{c,m} = {v_{{amp},\max}\frac{r_{s,m,\max}}{m}}},\mspace{14mu} {v_{s,m} = {v_{{amp},\max}\frac{r_{c,m,\max}}{m}}},\mspace{11mu} \; {m = 1},2,\ldots \mspace{11mu},M}{{x_{c,m} = {x_{{amp},\max}\frac{r_{c,m,\max}}{m^{2}}}},\mspace{14mu} {x_{s,m} = {x_{{amp},\max}\frac{r_{s,m,\max}}{m^{2}}}},\mspace{14mu} {m = 1},2,\ldots \mspace{11mu},M}} & (28) \end{matrix}$

The final seek trajectories can be written as:

$\begin{matrix} {{u^{*}(n)} = \left\{ {{\begin{matrix} {\begin{matrix} {{\sum\limits_{m = 1}^{M}{u_{c,m}\cos \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n} \right)}} +} \\ {\sum\limits_{m = 1}^{M}{u_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n} \right)}}} \end{matrix}} & {{{{if}\mspace{14mu} 0} \leq n \leq n_{accel}}} \\ {u_{coast}} & {{{{if}\mspace{14mu} n_{accel}} < n \leq {n_{accel} + n_{coast}}}} \\ \begin{matrix} {{\underset{m = 1}{\overset{M}{\sum}}u_{c,m}{\cos \left( {\frac{2m\; \pi}{n_{accel\_ decel}}\left( {n - n_{coast}} \right)} \right)}} +} \\ {\sum\limits_{m = 1}^{M}{u_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{accel\_ decel}}\left( {n - n_{coast}} \right)} \right)}}} \end{matrix} & {{{{{if}\mspace{14mu} n_{accel}} + n_{coast}} < n \leq n_{sk}}} \end{matrix}{where}\mspace{14mu} u_{coast}} = {{\sum\limits_{m = 1}^{M}{u_{c,m}{\cos \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n_{accel}} \right)}}} + {\sum\limits_{m = 1}^{M}{u_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n_{accel}} \right)}}}}} \right.} & (29) \\ {{v^{*}(n)} = \left\{ {{\begin{matrix} {\begin{matrix} {{\sum\limits_{m = 1}^{M}{v_{c,m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n} \right)}} \right\rbrack}} +} \\ {\sum\limits_{m = 1}^{M}{v_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n} \right)}}} \end{matrix}} & {{{{if}\mspace{14mu} 0} \leq n \leq n_{accel}}} \\ {v_{coast}} & {{{{if}\mspace{14mu} n_{accel}} < n \leq {n_{accel} + n_{coast}}}} \\ \begin{matrix} {{\underset{m = 1}{\overset{M}{\sum}}{v_{c,m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{accel\_ decel}}\left( {n - n_{coast}} \right)} \right)}} \right\rbrack}} +} \\ {\sum\limits_{m = 1}^{M}{v_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{accel\_ decel}}\left( {n - n_{coast}} \right)} \right)}}} \end{matrix} & {{{{{if}\mspace{14mu} n_{accel}} + n_{coast}} < n \leq n_{sk}}} \end{matrix}{where}\mspace{14mu} v_{coast}} = {{\sum\limits_{m = 1}^{M}{v_{c,m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n_{accel}} \right)}} \right\rbrack}} + {\sum\limits_{m = 1}^{M}{v_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n_{accel}} \right)}}}}} \right.} & (30) \\ {{x^{*}(n)} = \left\{ {{\begin{matrix} {\begin{matrix} {{x_{0}n} + {\sum\limits_{m = 1}^{M}{x_{c,m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n} \right)}} \right\rbrack}} -} \\ {\sum\limits_{m = 1}^{M}{x_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n} \right)}}} \end{matrix}} & {{{{if}\mspace{14mu} 0} \leq n \leq n_{accel}}} \\ {{x_{accel} + {\Delta \; {x\left( {n - n_{accel}} \right)}}}} & {{{{if}\mspace{14mu} n_{accel}} < n \leq {n_{accel} + n_{coast}}}} \\ \begin{matrix} {x_{coast} + {x_{0}\left( {n - n_{coast}} \right)} + {\underset{m = 1}{\overset{M}{\sum}}{x_{c,m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{accel\_ decel}}\left( {n - n_{coast}} \right)} \right)}} \right\rbrack}} -} \\ {\sum\limits_{m = 1}^{M}{x_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{accel\_ decel}}\left( {n - n_{coast}} \right)} \right)}}} \end{matrix} & {{{{{if}\mspace{14mu} n_{accel}} + n_{coast}} < n \leq n_{sk}}} \end{matrix}{where}\mspace{14mu} x_{accel}} = {{{x_{0}n_{accel}} + {\overset{M}{\sum\limits_{m = 1}}{x_{c,m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n_{accel}} \right)}} \right\rbrack}} - {\sum\limits_{m = 1}^{M}{x_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{accel\_ decel}}n_{accel}} \right)}x_{0}}}} = \frac{x_{accel\_ decel}}{n_{accel\_ decel}}}} \right.} & (31) \end{matrix}$

Position trajectory tracking controller is constructed to make VCM actuator follow the desired position trajectory x*(n).

The current trajectory u(n) is provided to the voice coil motor 36 to move the heads to the desired track. The servo system may include a state estimator 118 for feed forward control of the system. The estimator 118 may provide position {circumflex over (x)} (t), velocity {circumflex over (v)} (t) and torque ŵ (t) estimates to adders 120, 122 and 124.

FIGS. 6 and 7 shows a comparison between a prior art single sinusoidal drive current and a multi-drive current. As can be seen the utilization of a multi-sinusoidal drive current reduces the seek time for a given seek length.

While certain exemplary embodiments have been described and shown in the accompanying drawings, it is to be understood that such embodiments are merely illustrative of and not restrictive on the broad invention, and that this invention not be limited to the specific constructions and arrangements shown and described, since various other modifications may occur to those ordinarily skilled in the art. 

1. A hard disk drive, comprising: a disk; a head coupled to said disk; an actuator arm coupled to said head; a voice coil motor actuator coupled to said actuator arm; and, a servo coupled to said voice coil motor, said servo provides a driving current to said voice coil motor that has multiple sinusoidal waveforms.
 2. The hard disk drive of claim 1, wherein said servo includes a seek time table coupled to a current amplitude calculator, a fourier coefficient calculator coupled to said current amplitude calculator, a seek trajectory calculator coupled to said fourier coefficient calculator and a multi-sinusoidal wave generator coupled to said seek trajectory calculator.
 3. The hard disk drive of claim 2, wherein said seek trajectory calculator calculates trajectories having a form of: ${u^{*}(n)} = {{\sum\limits_{m = 1}^{M}{u_{amp}r_{c,m}{\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}} + {\sum\limits_{m = 1}^{M}{u_{amp}r_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}$ ${v^{*}(n)} = {{\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}n_{sk}u_{amp}}{2\; \pi}{\frac{r_{s,m}}{m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}} \right\rbrack}}} + {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}n_{sk}u_{amp}}{2\; \pi}\frac{r_{c,m}}{m}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}$ ${x^{*}(n)} = {{\frac{x_{sk}}{n_{sk}}n} + {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}^{2}n_{sk}^{2}u_{amp}}{\left( {2\; \pi} \right)^{2}}{\frac{r_{c,m}}{m^{2}}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}} \right\rbrack}}} - {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}^{2}n_{sk}^{2}u_{amp}}{\left( {2\; \pi} \right)^{2}}\frac{r_{s,m}}{m^{2}}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}$
 4. The hard disk drive of claim 1, wherein said servo includes a feed forward control loop.
 5. The hard disk drive of claim 1, wherein said servo is performed by a controller.
 6. A hard disk drive, comprising: a disk; a head coupled to said disk; an actuator arm coupled to said head; a voice coil motor actuator coupled to said actuator arm; and, servo means for providing a driving current to said voice coil motor that has multiple sinusoidal waveforms.
 7. The hard disk drive of claim 6, wherein said servo means includes a seek time table coupled to a current amplitude calculator, a fourier coefficient calculator coupled to said current amplitude calculator, a seek trajectory calculator coupled to said fourier coefficient calculator and a multi-sinusoidal wave generator coupled to said seek trajectory calculator.
 8. The hard disk drive of claim 7, wherein said seek trajectory calculator calculates trajectories having a form of: ${u^{*}(n)} = {{\sum\limits_{m = 1}^{M}{u_{amp}r_{c,m}{\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}} + {\sum\limits_{m = 1}^{M}{u_{amp}r_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}$ ${v^{*}(n)} = {{\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}n_{sk}u_{amp}}{2\; \pi}{\frac{r_{s,m}}{m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}} \right\rbrack}}} + {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}n_{sk}u_{amp}}{2\; \pi}\frac{r_{c,m}}{m}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}$ ${x^{*}(n)} = {{\frac{x_{sk}}{n_{sk}}n} + {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}^{2}n_{sk}^{2}u_{amp}}{\left( {2\; \pi} \right)^{2}}{\frac{r_{c,m}}{m^{2}}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}} \right\rbrack}}} - {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}^{2}n_{sk}^{2}u_{amp}}{\left( {2\; \pi} \right)^{2}}\frac{r_{s,m}}{m^{2}}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}$
 9. The hard disk drive of claim 6, wherein said servo includes a feed forward loop.
 10. The hard disk drive of claim 6, wherein said servo is performed by a controller.
 11. A method for driving a voice coil motor of a hard disk drive, comprising: providing a driving current that has multiple sinusoidal waveforms to a voice coil motor; and, moving the voice coil motor relative to a magnetic disk.
 12. The method of claim 11, further comprising requesting a seek, providing a seek time in response to the seek request, calculating a current amplitude from the seek time, calculating a plurality of fourier coefficients from the current amplitude and calculating the driving current from the fourier coefficients.
 13. The method of claim 11, further comprising calculating trajectories having a form of: ${u^{*}(n)} = {{\sum\limits_{m = 1}^{M}{u_{amp}r_{c,m}{\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}} + {\sum\limits_{m = 1}^{M}{u_{amp}r_{s,m}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}$ ${v^{*}(n)} = {{\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}n_{sk}u_{amp}}{2\; \pi}{\frac{r_{s,m}}{m}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}} \right\rbrack}}} + {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}n_{sk}u_{amp}}{2\; \pi}\frac{r_{c,m}}{m}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}$ ${x^{*}(n)} = {{\frac{x_{sk}}{n_{sk}}n} + {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}^{2}n_{sk}^{2}u_{amp}}{\left( {2\; \pi} \right)^{2}}{\frac{r_{c,m}}{m^{2}}\left\lbrack {1 - {\cos \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}} \right\rbrack}}} - {\sum\limits_{m = 1}^{M}{\frac{K_{a}T_{s}^{2}n_{sk}^{2}u_{amp}}{\left( {2\; \pi} \right)^{2}}\frac{r_{s,m}}{m^{2}}{\sin \left( {\frac{2m\; \pi}{n_{sk}}n} \right)}}}}$
 14. The method of claim 11, further comprising providing a feed forward estimate to the driving signal. 